#ifndef MDX2_HEADER_H_
#define MDX2_HEADER_H_

#include <cstdint>
#include "Vector3D.h"

// Description: Model header
// Count:  1
// Offset: 0x14
struct MDX2_Header
{
    uint32_t nGlobalSequences;
    uint32_t ofsGlobalSequences;
    uint32_t nAnimations;
    uint32_t ofsAnimations;
    uint32_t nAnimationLookup;
    uint32_t ofsAnimationLookup;
#if MDX_BUILD < 28
    uint32_t nUnknown1;
    uint32_t ofsUnknown1;
#endif
    uint32_t nBones;
    uint32_t ofsBones;
    uint32_t nKeyBoneLookup;
    uint32_t ofsKeyBoneLookup;
    uint32_t nVertices;
    uint32_t ofsVertices;
    uint32_t nViews;
#if MDX_BUILD < 28
    uint32_t ofsViews;
#endif
    uint32_t nColors;
    uint32_t ofsColors;
    uint32_t nTextures;
    uint32_t ofsTextures;
    uint32_t nTransparency;
    uint32_t ofsTransparency;
#if MDX_BUILD < 28
    uint32_t nUnknown2;
    uint32_t ofsUnknown2;
#endif
    uint32_t nUVAnimation;
    uint32_t ofsUVAnimation;
    uint32_t nTexReplace;
    uint32_t ofsTexReplace;
    uint32_t nRenderFlags;
    uint32_t ofsRenderFlags;
    uint32_t nBoneLookup;
    uint32_t ofsBoneLookup;
    uint32_t nTexLookup;
    uint32_t ofsTexLookup;
    uint32_t nTexUnits;
    uint32_t ofsTexUnits;
    uint32_t nTransLookup;
    uint32_t ofsTransLookup;
    uint32_t nUVAnimLookup;
    uint32_t ofsUVAnimLookup;
    Vec3F VertexBox[2];
    float VertexRadius;
    Vec3F BoundingBox[2];
    float BoundingRadius;
    uint32_t nBoundingTriangles;
    uint32_t ofsBoundingTriangles;
    uint32_t nBoundingVertices;
    uint32_t ofsBoundingVertices;
    uint32_t nBoundingNormals;
    uint32_t ofsBoundingNormals;
    uint32_t nAttachments;
    uint32_t ofsAttachment;
    uint32_t nAttachLookup;
    uint32_t ofsAttachLookup;
    uint32_t nEvent;
    uint32_t ofsEvents;
    uint32_t nLights;
    uint32_t ofsLights;
    uint32_t nCameras;
    uint32_t ofsCameras;
    uint32_t nCameraLookup; 
    uint32_t ofsCameraLookup;
    uint32_t nRibbonEmitters;
    uint32_t ofsRibbonEmitters;
    uint32_t nParticleEmitters;
    uint32_t ofsParticleEmitters;
#if MDX_BUILD >= 28
    uint32_t nUnknown;
    uint32_t ofsUnknown;
#endif
};

#endif // MDX2_HEADER_H_